//
//  TLTableViewCell.m
//  PiyingkeLibrary
//
//  Created by Tianlong on 2017/7/26.
//
//

#import "TLTableViewCell.h"

@implementation TLTableViewCell


- (void)awakeFromNib {
    [super awakeFromNib];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
}

/**
 通过tableview创建cell
 
 @param tableView tableView不能为空
 */
+(instancetype)cellWithTableView:(UITableView *)tableView cellStyle:(TLTableViewCellStyle)cellStyle{
    NSString *identifier = NSStringFromClass([self class]);
    TLTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[TLTableViewCell alloc] initWithStyle:[TLTableViewCell getTableCellStyleWithTLTableCellStyle:cellStyle] reuseIdentifier:identifier];
        cell->_tableView = tableView;
        cell.identifier = identifier;
        cell.model = nil;
    }
    return cell;
}

/**
 通过tableview，模型来创建cell
 
 @param tableView tableView 不能为空
 */
+(instancetype)cellWithTableView:(UITableView *)tableView model:(id)model cellStyle:(TLTableViewCellStyle)cellStyle{
    
    NSString *identifier = NSStringFromClass([self class]);
    TLTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[TLTableViewCell alloc] initWithStyle:[TLTableViewCell getTableCellStyleWithTLTableCellStyle:cellStyle] reuseIdentifier:identifier];
        cell->_tableView = tableView;
        cell.model = model;
        cell.identifier = identifier;
    }
    return cell;
}

/**
 通过tableview，标识符来创建cell
 
 @param tableView tableView 不能为空
 @param reuseIdentifier 外界传递的重用标识符, 可以为nil 和 空字符串
 */
+(instancetype)cellWithTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseIdentifier cellStyle:(TLTableViewCellStyle)cellStyle{
    
    TLTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (cell == nil) {
        cell = [[TLTableViewCell alloc] initWithStyle:[TLTableViewCell getTableCellStyleWithTLTableCellStyle:cellStyle] reuseIdentifier:reuseIdentifier];
        cell->_tableView = tableView;
        cell.identifier = reuseIdentifier;
        cell.model = nil;
    }
    return cell;
}

/**
 通过tableview，标识符，模型来创建cell
 
 @param tableView tableView 不能为空
 @param model 外界传递的模型
 @param reuseIdentifier 外界传递的重用标识符, 可以为nil 和 空字符串
 */
+(instancetype)cellWithTableView:(UITableView *)tableView model:(id)model reuseIdentifier:(NSString *)reuseIdentifier cellStyle:(TLTableViewCellStyle)cellStyle{
    TLTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (cell == nil) {
        cell = [[TLTableViewCell alloc] initWithStyle:[TLTableViewCell getTableCellStyleWithTLTableCellStyle:cellStyle] reuseIdentifier:reuseIdentifier];
        cell->_tableView = tableView;
        cell.identifier = reuseIdentifier;
        cell.model = model;
    }
    return cell;
}

#pragma mark - 通过自己的获取原生对应的style
+(UITableViewCellStyle)getTableCellStyleWithTLTableCellStyle:(TLTableViewCellStyle)style{
    
    if (style == TLTableViewCellStyleDefault) {
        return UITableViewCellStyleDefault;
    }
    else if (style == TLTableViewCellStyleValue1){
        return UITableViewCellStyleValue1;
    }
    else if (style == TLTableViewCellStyleValue2){
        return UITableViewCellStyleValue2;
    }
    else if (style == TLTableViewCellStyleSubtitle){
        return UITableViewCellStyleSubtitle;
    }
    else{
        return UITableViewCellStyleDefault;
    }
}

@end
